package main

import (
	"fmt"
	"net"

	"gitee.com/zhaoqinghuan/rpc/transport"
)

func main1() {
	tcpAddr, err := net.ResolveTCPAddr("tcp4", "127.0.0.1:5678") // 解析 TCP 地址字符串 "127.0.0.1:5678" 为 *net.TCPAddr 类型的地址，使用 IPv4 协议。
	transport.CheckError(err)
	fmt.Printf("ip %s port %d\n", tcpAddr.IP.String(), tcpAddr.Port) // 打印解析后的 IP 地址和端口号。
	conn, err := net.DialTCP("tcp", nil, tcpAddr)                    // 拨号到指定的 TCP 地址（tcpAddr），建立一个 TCP 连接。第二个参数 nil 表示本地地址由系统自动选择。
	transport.CheckError(err)

	// 连接建立后系统会自动向客户端分配一个 49152 ~ 65535 之间的端口

	fmt.Printf("establish connection to server %s\n", conn.RemoteAddr().String()) // 打印已建立到服务器的连接，并显示服务器的地址。
	//连发3条报文
	for i := 0; i < 3; i++ {
		n, err := conn.Write(append([]byte("china"), transport.MAGIC...)) //发送消息到服务器。消息内容是 "china" 后跟 transport.MAGIC 作为分隔符。conn.Write 返回写入的字节数和一个错误对象
		transport.CheckError(err)
		fmt.Printf("write request %d bytes\n", n)
	}

	conn.Close()
	fmt.Println("close connection")
}
